package com.fanghaoran.notes.service;

import com.fanghaoran.notes.bean.MyResult;
import com.fanghaoran.notes.entity.User;

import java.math.BigDecimal;
import java.sql.SQLException;

/**
 * @Author: win11
 * @Date: 2023/04/14/14:59
 * @Description: 用户模块业务处理
 */
public interface UserService {
    /**
     * 用户登录业务
     * @param user 用户输入的登录信息
     * @return 返回登录结果
     * @throws Exception 异常
     */
    MyResult login(User user) throws Exception;

    /**
     * 用户注册业务
     * @param user 用户注册的信息
     * @return 返回注册结果
     * @throws Exception 异常
     */
    MyResult register(User user) throws Exception;

    /**
     * 获取并往邮箱发送验证码
     * @param user 用户信息
     * @return 成功返回验证码 失败返回null
     * @throws Exception 异常
     */
    MyResult sendCode(User user) throws Exception;


    /**
     * 获取用户头像路径
     * @param user 用户信息
     * @return 成功返回用户头像路径 失败返回null
     * @throws Exception 异常
     */
    MyResult getUserInfo(User user) throws Exception;

    /**
     * 通过用户id查询用户
     * @param uId 用户id
     * @return 返回查询结果
     * @throws Exception 异常
     */
    MyResult getUserInfoByUid(int uId) throws Exception;


    /**
     * 修改密码业务
     * @param user 修改后的数据
     * @return 返回修改结果
     * @throws SQLException 异常
     */
     MyResult modifyPwd(User user) throws SQLException;

    /**
     * 修改头像业务
     * @param uId 用户id
     * @param filename 新头像图片名称
     * @return 返回修改结果
     * @throws SQLException 异常
     */
     MyResult updatePhoto(int uId,String filename) throws SQLException;

    /**
     * 修改余额
     * @param uId 用户id
     * @param oId 订单id
     * @param totalCount 交易金额
     * @return 返回修改结果
     * @throws Exception 异常
     */
    MyResult modifyBalance(int uId,String oId,BigDecimal totalCount) throws Exception;

    /**
     * 修改金额(退款时)
     * @param buyerId 买家id
     * @param sellerId 卖家id
     * @param totalCount 交易金额
     * @return 返回修改结果
     * @throws Exception 异常
     */
    MyResult modifyBalanceOfRefund(int buyerId,int sellerId,BigDecimal totalCount) throws Exception;
}
